package cn.map.linkedhashmap;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.TreeMap;

public class Demo04 {
    public static void main(String[] args) {
        demo01();
        System.out.println();
        demo02();
        System.out.println();
        demo03();
    }

    private static void demo03() {
        HashMap<String,Integer> hm = new HashMap<>();

        hm.put("bbb" , 222);
        hm.put("aaa" , 111);
        hm.put("ddd" , 444);
        hm.put("ccc" , 333);
        hm.put("eee" , 555);
        System.out.println(hm);
    }

    private static void demo02() {
        TreeMap<Integer, String> tm = new TreeMap<>();
        tm.put(1, "aaa");
        tm.put(3, "ccc");
        tm.put(2, "bbb");
        tm.put(4, "ddd");

        System.out.println(tm);
    }

    public static void demo01() {
        /*
           LinkedHashMap:
               由键决定：
                   有序、不重复、无索引。
               有序：
                   保证存储和取出的顺序一致
               原理：
                   底层数据结构是依然哈希表，只是每个键值对元素又额外的多了一个双链表的机制记录存储的顺序。
         */



        //1.创建集合
        LinkedHashMap<String,Integer> lhm = new LinkedHashMap<>();

        //2.添加元素
        lhm.put("c",789);
        lhm.put("b",456);
        lhm.put("a",123);
        lhm.put("a",111);

        //3.打印集合
        System.out.println(lhm);
    }
}
